﻿// Decompiled with JetBrains decompiler
// Type: Microsoft.InfoCards.UIAgentMonitorHandle
// Assembly: infocard, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// MVID: 8E14765A-6610-409A-BA36-099A0642905D
// Assembly location: E:\git\ALLIDA\windll\infocard.exe

using System;
using System.Security.Principal;

namespace Microsoft.InfoCards
{
  internal class UIAgentMonitorHandle : IDisposable
  {
    private InfoCardUIAgent m_agent;
    private string m_username;
    private int m_tsSessionId;

    public string UserName
    {
      get
      {
        return this.m_username;
      }
    }

    public int TsSessionId
    {
      get
      {
        return this.m_tsSessionId;
      }
    }

    public InfoCardUIAgent CreateAgent(
      int callerPid,
      WindowsIdentity callerIdentity,
      int tsSessionId)
    {
      this.m_username = callerIdentity.User.ToString();
      this.m_tsSessionId = tsSessionId;
      UIAgentMonitor.Instance().AddNewClient(this);
      this.m_agent = InfoCardUIAgent.Create(callerPid, callerIdentity, tsSessionId);
      return this.m_agent;
    }

    void IDisposable.Dispose()
    {
      UIAgentMonitor.Instance().RemoveClient(this);
    }
  }
}
